package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.MainTask;

/**
 * 主任务Service接口
 * 
 * @author zhaoyu
 * @date 2025-06-18
 */
public interface IMainTaskService 
{
    /**
     * 查询主任务
     * 
     * @param taskId 主任务主键
     * @return 主任务
     */
    public MainTask selectMainTaskByTaskId(Long taskId);

    /**
     * 查询主任务列表
     * 
     * @param mainTask 主任务
     * @return 主任务集合
     */
    public List<MainTask> selectMainTaskList(MainTask mainTask);

    /**
     * 新增主任务
     * 
     * @param mainTask 主任务
     * @return 结果
     */
    public int insertMainTask(MainTask mainTask);

    /**
     * 修改主任务
     * 
     * @param mainTask 主任务
     * @return 结果
     */
    public int updateMainTask(MainTask mainTask);

    /**
     * 批量删除主任务
     * 
     * @param taskIds 需要删除的主任务主键集合
     * @return 结果
     */
    public int deleteMainTaskByTaskIds(Long[] taskIds);

    /**
     * 删除主任务信息
     * 
     * @param taskId 主任务主键
     * @return 结果
     */
    public int deleteMainTaskByTaskId(Long taskId);

    /**
     * 检查主任务是否可以编辑
     * 
     * @param taskId 主任务ID
     * @return 是否可编辑
     */
    public boolean checkTaskEditable(Long taskId);

    /**
     * 检查主任务是否可以删除
     * 
     * @param taskId 主任务ID
     * @return 是否可删除
     */
    public boolean checkTaskDeletable(Long taskId);

    /**
     * 获取主任务的子任务状态统计
     * 
     * @param taskId 主任务ID
     * @return 子任务状态统计
     */
    public java.util.Map<String, Object> getSubTaskStatus(Long taskId);

    /**
     * 根据子任务状态自动更新主任务状态
     * 
     * @param mainTaskId 主任务ID
     * @return 结果
     */
    public int updateMainTaskStatusBySubTasks(Long mainTaskId);

    /**
     * 接收主任务，将主任务状态从待接收(0)变为进行中(1)
     * 
     * @param taskId 主任务ID
     * @return 结果
     */
    public int receiveMainTask(Long taskId);
}
